package org.eiahe.hr.salary.service;

import org.ehe.common.mybatis.core.page.PageQuery;
import org.ehe.common.mybatis.core.page.TableDataInfo;
import org.eiahe.hr.salary.domain.bo.BonusPaymentBo;
import org.eiahe.hr.salary.domain.vo.BonusPaymentVo;
import org.eiahe.hr.salary.domain.vo.BonusImportVo;

import java.util.Collection;
import java.util.List;

/**
 * 奖金发放Service接口
 *
 * @author zhangnn
 */
public interface IBonusPaymentService {

    /**
     * 查询奖金发放
     *
     * @param paymentId 奖金发放ID
     * @return 奖金发放
     */
    BonusPaymentVo queryById(Long paymentId);

    /**
     * 查询奖金发放列表
     *
     * @param bo 奖金发放业务对象
     * @return 奖金发放集合
     */
    List<BonusPaymentVo> queryList(BonusPaymentBo bo);

    /**
     * 分页查询奖金发放列表
     *
     * @param bo        奖金发放业务对象
     * @param pageQuery 分页参数
     * @return 奖金发放分页数据
     */
    TableDataInfo<BonusPaymentVo> queryPageList(BonusPaymentBo bo, PageQuery pageQuery);

    /**
     * 新增奖金发放
     *
     * @param bo 奖金发放业务对象
     * @return 是否成功
     */
    Boolean insertByBo(BonusPaymentBo bo);

    /**
     * 修改奖金发放
     *
     * @param bo 奖金发放业务对象
     * @return 是否成功
     */
    Boolean updateByBo(BonusPaymentBo bo);

    /**
     * 批量删除奖金发放
     *
     * @param ids 奖金发放ID数组
     * @return 是否成功
     */
    Boolean deleteWithValidByIds(Collection<Long> ids);

    /**
     * 发放奖金
     *
     * @param paymentId 奖金发放ID
     * @return 是否成功
     */
    Boolean payBonus(Long paymentId);

    /**
     * 领取奖金
     *
     * @param paymentId 奖金发放ID
     * @return 是否成功
     */
    Boolean receiveBonus(Long paymentId);

    /**
     * 导入奖金数据
     *
     * @param dataList  数据列表
     * @param errorList 错误信息列表
     * @return 是否成功
     */
    Boolean importBonusData(List<BonusImportVo> dataList, List<String> errorList);
}